﻿using System;
using System.Collections.Generic;
using System.Text;
using AMS.DataAccess.Common;
using AMS.DataAccess.Sys.BO;
using AMS.DataAccess.Sys.Filters;

namespace AMS.DataAccess.Sys.Interfaces
{
    public interface IUserManager
    {
        void AddUser(CallContext context, UserInfo user);
        bool UpdateUser(CallContext context, UserInfo user);
        List<UserInfo> GetActiveUsers(CallContext context);
        List<UserInfo> GetTrademarkAttoneys(CallContext context, bool queryExtentedInfo);
        bool UpdateUserPassword(CallContext context, int userId, string newPassword);
        UserInfo GetUser(CallContext context, int userId);
        List<UserInfo> GetPagedUsers(CallContext context, UserFilter filter, int pageIndex, int pageSize);
        List<UserInfo> GetPagedUsers(CallContext context, UserFilter filter, int pageIndex, int pageSize, out int totalCount);
        int BatchSetUsersInactive(CallContext context, ICollection<int> userIDs);
        List<UserInfo> GetUsersByRole(CallContext context, int roleId);
        List<UserInfo> GetUsersExcludedOfRole(CallContext context, int roleId);
        Dictionary<string, int> GetUserPrivilages(CallContext context, int userId);
        Dictionary<string, int> GetUserPrivilages(CallContext context, int userId, int moduleId);
        List<FunctionInfo> GetPriorityFunctions(CallContext context, int userID);
        int BatchUpdatePriorityFunctions(CallContext context, int userID, IList<int> addedList, IList<int> deletedList);
    }
}
